#include <iostream>
#include <algorithm>
#include <string>
#include <cstdio>
#include <vector>
using namespace std;
class Solution
{
    // 给定两个排序后的数组 A 和 B，其中 A 的末端有足够的缓冲空间容纳 B。
    // 编写一个方法，将 B 合并入 A 并排序。
    // 初始化 A 和 B 的元素数量分别为 m 和 n。
public:
    //思路:从后往前插，双指针
    void merge(vector<int> &A, int m, vector<int> &B, int n)
    {
        int i = m - 1, j = n - 1;
        while (i >= 0 && j >= 0)
        {
            if (A[i] >= B[j])
                A[i + j + 1] = A[i], i--;
            else
                A[i + j + 1] = B[j], j--;
        }
        while (j >= 0)
            A[i + j + 1] = B[j], j--;
    }
};